访问电脑版页面

导航:老古开发网手机版51单片机定时器

51单片机基于定时器0的硬件延时代码

导读:1 //晶振的频率2 #define OSC_FREQ (11059200UL)34 //每个指令的振荡周期数(4,6,12),注意,这里一定要仔细查看芯片手册5 //*12 - 早期的8051、8052及当前的绝大部分51单片机6 //*6 - Philips 的芯片7 //*4 - Dall
关键字:
51单片机,定时器0,硬件延时,

1 //晶振的频率

2 #define OSC_FREQ (11059200UL)

3

4 //每个指令的振荡周期数(4,6,12),注意,这里一定要仔细查看芯片手册

5 //*12 - 早期的8051、8052及当前的绝大部分51单片机

6 //*6 - Philips 的芯片

7 //*4 - Dallas

8 #define OSC_PER_INST (12)

9

10 //TIME 为定时时间 单位MS

11 #define PRELOAD1MS (65536 - 1*(UINT16)(OSC_FREQ/(OSC_PER_INST*1000)))

12 #define PRELOAD5MS (65536 - 5*(UINT16)(OSC_FREQ/(OSC_PER_INST*1000)))

13

14 void start_Timeout1ms(){

15 TH0 = PRELOAD1MS / 256;

16 TL0 = PRELOAD1MS % 256;

17 TF0 = 0 ;//清溢出标志位

18

19 ET0 = 0; //关定时器0的中断

20

21 TR0 = 1; //启动定时器

22

23 }

24

25 void start_Timeout5ms(){

26 //TMOD = ;

27

28 TH0 = PRELOAD5MS / 256;

29 TL0 = PRELOAD5MS % 256;

30 TF0 = 0 ;//清溢出标志位

31

32 ET0 = 0; //关定时器0的中断

33

34 TR0 = 1; //启动定时器

35

36 }

37

38 void stop_Timeout(){

39 TR0 = 0;

40 }

41

42 void Delay5ms(){

43 start_Timeout5ms();

44 while(!_testbit_(TF0));

45 stop_Timeout();

46 }

47

48 /* 用法

49 start_Timeout1ms();

50 while(!TF0); //等待T0超时

51 stop_Timeout();

52 */


来源:互联网   作者:karen  2018/10/22 18:00:01
栏目: [ 51单片机定时器]

相关阅读

MCS-51单片机定时系统

单片机定时器初值计算公式(51单片机和AVR单片机的初值计算三种方法)

零基础:学51单片机定时器

80C51单片机内部定时器和计数器的结构及原理解析

51单片机计数器与定时器的区别

如何实现C8051单片机的精确延时

mcs51单片机计数器工作方式1 计数初值计算与定时编程举例

51单片机时钟精度误差的解决

MCS-51单片机精确定时的两种编程方法介绍

51单片机的定时器

C51单片机延时时间的计算方法解析

51单片机中的定时计数器的主体结构及功能解析

AT89S51单片机00-59秒计时器设计

基于51单片机的计时器设计

51单片机1s延时程序设计

AT89S51单片机的定时/计数器T0的应用

如何利用51单片机内部定时器实现对时间的操作

MCS-51单片机的定时器/计数器概念

51单片机的定时器与计数器是如何工作的

51单片机基于定时器0的硬件延时代码